From d9e46835ab53a135e979cb7eb6febc5dc6f71a85 Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Tue, 15 Mar 2011 18:19:47 +0000 Subject: [PATCH] libxl: do not start a xenpv qemu solely for tap devices if blktap is available qemu is used as a fallback for DISK_BACKEND_TAP if no blktap is available but if blktap is available, or for DISK_BACKEND_PHY, we don't need a qemu process. Signed-off-by: Ian Campbell Acked-by: Ian Jackson Committed-by: Ian Jackson --- tools/libxl/libxl_dm.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c index d535e11a76..1ffcc909f8 100644 --- a/tools/libxl/libxl_dm.c +++ b/tools/libxl/libxl_dm.c @@ -828,8 +828,29 @@ int libxl__need_xenpv_qemu(libxl_ctx *ctx, goto out; } - if (nr_disks > 0 && !libxl__blktap_enabled(&gc)) - ret = 1; + if (nr_disks > 0) { + int blktap_enabled = -1; + for (i = 0; i < nr_disks; i++) { + switch (disks[i].backend) { + case DISK_BACKEND_TAP: + if (blktap_enabled == -1) + blktap_enabled = libxl__blktap_enabled(&gc); + if (!blktap_enabled) { + ret = 1; + goto out; + } + break; + + case DISK_BACKEND_QDISK: + ret = 1; + goto out; + + case DISK_BACKEND_PHY: + case DISK_BACKEND_UNKNOWN: + break; + } + } + } out: libxl__free_all(&gc); -- 2.30.2